맨위로가기

V8 (자바스크립트 엔진)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 주로 자바스크립트 코드를 실행하는 데 사용된다. 2008년 구글 크롬 브라우저와 함께 처음 출시되었으며, 이후 자바스크립트 실행 속도 향상을 위해 여러 차례 개선되었다. 초기에는 크랭크섀프트, 터보팬 등의 컴파일러를 사용했으며, 2017년에는 이그니션 인터프리터와 터보팬 컴파일러로 구성된 새로운 파이프라인을 도입했다. 2021년에는 스파크플러그 컴파일러가 추가되었고, 2023년에는 매글레브 컴파일러가 도입되었다. V8은 추상 구문 트리를 생성하고, 바이트코드를 거쳐 기계어로 컴파일하는 방식으로 작동하며, 크롬, 노드.js, 데노 등 다양한 곳에서 활용된다.

더 읽어볼만한 페이지

  • 자바스크립트 엔진 - 차크라 (자바스크립트 엔진)
    차크라는 ECMAScript 5.1과 ECMAScript 2015의 일부 기능을 지원하는 자바스크립트 엔진이며, 마이크로소프트는 해당 엔진의 핵심 구성 요소를 ChakraCore라는 이름으로 오픈 소스화했다.
  • 자바스크립트 엔진 - 제리스크립트
    제리스크립트는 메모리 제약적인 임베디드 시스템을 위해 ARM Thumb-2 아키텍처 기반으로 개발된, ECMAScript 5.1 표준을 준수하고 다양한 플랫폼에서 사용 가능한 JavaScript 엔진이다.
  • 프로그래밍 언어에 관한 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
  • 프로그래밍 언어에 관한 - HTML
    HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다.
  • 가상 머신 - X86 가상화
    X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다.
  • 가상 머신 - HHVM
    HHVM은 페이스북에서 개발한 PHP 및 Hack 언어 실행 엔진으로, JIT 컴파일을 통해 높은 성능을 제공하며 웹 개발 분야에 새로운 가능성을 제시했다.
V8 (자바스크립트 엔진) - [IT 관련 정보]에 관한 문서
기본 정보
V8 로고
개발자구글
첫 출시일2008년 9월 2일
최신 버전12.1
최신 버전 출시일2023년 11월 28일
프로그래밍 언어C++
플랫폼IA-32
x86-64
32비트 ARM
AArch64
32비트 MIPS
MIPS64
PowerPC
IBM ESA/390
z/Architecture
종류자바스크립트 및 웹어셈블리 엔진
라이선스BSD
지원 운영 체제
지원 운영 체제윈도우 7 이상
macOS 10.12 이상
리눅스
특징
목적자바스크립트 실행
사용처크롬
Node.js
오페라
삼성 인터넷

2. 역사

V8은 C++로 작성되었으며, ECMAScript(ECMA-262) 표준을 준수한다. 독립적으로 실행 가능하며, C++로 작성된 애플리케이션의 일부로도 작동할 수 있다.[30]

파이어폭스 3.5에 도입된 JavaScript 엔진 TraceMonkey는 인터프리터로 실행하여 통계 정보를 수집한 후,[29] 중간 코드로 변환하고, 그 위에서 JIT 컴파일을 수행했다. 그러나 V8은 중간 코드 없이 인터프리터도 탑재하지 않고 최초 실행부터 컴파일하므로 고속으로 작동한다.[27]

개발 리더는 자바 HotSpot 개발자인 라스 바크이다.[30]

V8의 어셈블러는 스트롱토크의 어셈블러를 기반으로 한다.[8]

2010년 12월에 "Crankshaft"라는 최적화 컴파일러가 도입되어 속도가 개선되었다.[9]

2017년 5월에 출시된 v5.9부터 기존에 사용되던 컴파일러 "Full-Codegen"과 최적화 컴파일러 "Crankshaft"가 제거되고 3년 반에 걸쳐 개발된 인터프리터 "Ignition"과 컴파일러 "TurboFan" 조합으로 대체되어 메모리 소비량 감소와 속도 개선이 이루어졌다.[13]

2021년 5월에 출시된 v9.1부터는 최적화 컴파일러 "Sparkplug"가 "Ignition"과 "TurboFan" 파이프라인 사이에 추가되었다. "Sparkplug"는 바이트코드에서 한 번에 직접 기계어로 고속 컴파일한다.[31]

2023년에 단일 할당을 사용하는 컴파일러 "Maglev"가 "Sparkplug"와 "TurboFan" 사이에 추가되었다. 컴파일 속도는 "Sparkplug"보다 10배 느리지만 "TurboFan"보다 10배 빠르다.[32]

2. 1. 초기 개발 및 발전

구글은 자사의 크롬 브라우저를 위해 V8을 개발했으며, 두 제품 모두 2008년에 처음 출시되었다.[3] V8의 수석 개발자는 라스 바크였으며, 강력한 자동차 엔진의 이름을 따서 명명되었다.[4] 수년 동안 크롬은 다른 브라우저보다 자바스크립트 실행 속도가 더 빨랐다.[5][6][7]

V8 어셈블러는 스트롱토크 어셈블러를 기반으로 한다.[8] 2010년 12월 7일, 속도 향상을 위한 크랭크샤프트라는 새로운 컴파일 인프라가 출시되었다.[9] 2015년 크롬 41 버전에서는 asm.js와 같이 이전에는 처리하기 어려웠던 작업량에 대해 성능 향상을 제공하기 위해 터보팬 프로젝트가 추가되었다.[10]

2016년에는 터보팬 및 크랭크샤프트와 비교하여 소형 메모리 안드로이드 휴대전화의 메모리 사용량을 줄이는 것을 목표로 V8에 이그니션 인터프리터가 추가되었다.[12]

2017년에는 이그니션(인터프리터)과 터보팬(최적화 컴파일러)으로 구성된 새로운 컴파일러 파이프라인이 V8에 포함되었다. V8 5.9 버전부터는 팀이 새로운 자바스크립트 언어 기능과 해당 기능에 필요한 최적화를 따라잡을 수 없다고 판단했기 때문에 풀코드젠(초기 기준 컴파일러)과 크랭크샤프트는 자바스크립트 실행을 위해 V8에서 더 이상 사용되지 않는다.[13]

2021년에는 핫스팟에서 사용하는 프로파일링 C1 컴파일러와 직접적으로 병렬을 이루는 V8 내 기존 터보팬 컴파일러를 보완하는 스파크플러그 컴파일러가 출시되면서 새로운 계층적 컴파일 파이프라인이 도입되었다.

2023년에는 매글레브 SSA 기반 컴파일러가 추가되었는데, 이 컴파일러는 스파크플러그보다 10배 느리지만 터보팬보다 10배 빠르다. 이는 터보팬으로 최적화될 만큼 "핫"하지 않은 빈도가 낮은 루프(대부분의 웹 애플리케이션처럼 자바스크립트 실행보다 브라우저와 상호 작용하는 데 더 많은 시간을 소비하는 경우)의 차이를 해소한다. [14]

2. 2. 컴파일러 개선

V8 어셈블러는 스트롱토크 어셈블러에 기반을 둔다.[35] 2010년 12월 7일, 크랭크섀프트라는 이름의 새로운 컴파일링 인프라스트럭처가 출시되어 속도가 개선되었다.[36] 2015년 크롬 버전 41 이후에는 asm.js와 같이 이전에는 처리하기 어려웠던 작업에 대해 성능 향상을 제공하기 위해 터보팬(TurboFan) 프로젝트가 추가되었다.[10][37]

2016년에는 소형 메모리 안드로이드 휴대전화의 메모리 사용량을 줄이는 것을 목표로 V8에 이그니션 인터프리터가 추가되었다. (터보팬 및 크랭크섀프트와 비교)[12][38]

2017년에는 이그니션(인터프리터)과 터보팬(최적화 컴파일러)으로 구성된 새로운 컴파일러 파이프라인이 V8에 포함되었다. V8 5.9 버전부터는 팀이 새로운 자바스크립트 언어 기능과 해당 기능에 필요한 최적화를 따라잡을 수 없다고 판단했기 때문에 풀코드젠(초기 기준 컴파일러)과 크랭크섀프트는 자바스크립트 실행을 위해 V8에서 더 이상 사용되지 않는다.[13][39]

2021년에는 핫스팟에서 사용하는 프로파일링 C1 컴파일러와 직접적으로 병렬을 이루는 V8 내 기존 터보팬 컴파일러를 보완하는 스파크플러그 컴파일러가 출시되면서 새로운 계층적 컴파일 파이프라인이 도입되었다.

2023년에는 매글레브 SSA 기반 컴파일러가 추가되었는데, 이 컴파일러는 스파크플러그보다 10배 느리지만 터보팬보다 10배 빠르다. 이는 터보팬으로 최적화될 만큼 "핫"하지 않은 빈도가 낮은 루프(대부분의 웹 애플리케이션처럼 자바스크립트 실행보다 브라우저와 상호 작용하는 데 더 많은 시간을 소비하는 경우)의 차이를 해소한다. [14]

2. 3. 웹어셈블리 지원

2015년에 새로운 웹어셈블리 언어에 대한 지원이 시작되었다.[11]

3. 설계

V8은 자체 파서를 사용하여 먼저 추상 구문 트리를 생성한다.[15] 그런 다음 Ignition은 내부 V8 바이트코드 형식을 사용하여 이 구문 트리에서 바이트코드를 생성한다.[16] TurboFan은 이 바이트코드를 기계어로 컴파일한다. 다시 말해, V8은 실행하기 전에 정적 컴파일을 사용하여 ECMAScript를 네이티브 기계어로 직접 컴파일한다.[17] 컴파일된 코드는 코드 실행 프로필의 휴리스틱을 기반으로 런타임 시 동적으로 추가로 최적화되고(그리고 다시 최적화된다). 사용되는 최적화 기법에는 인라이닝, 비용이 많이 드는 런타임 속성의 생략, 및 인라인 캐싱이 포함된다. 가비지 컬렉터는 세대별 증분 컬렉터이다.[18]

4. 사용처

V8은 브라우저에서 사용하거나 독립적인 프로젝트에 통합할 수 있다. V8은 다음 소프트웨어에서 사용된다.


  • 크로미엄 기반 웹 브라우저 - 구글 크롬(Google Chrome), 브레이브, 오페라, 비발디 및 마이크로소프트 엣지(Microsoft Edge).
  • 쿠치베이스 데이터베이스 서버
  • 데노 런타임 환경[23]
  • 일렉트론 데스크톱 애플리케이션 프레임워크 (아톰 및 비주얼 스튜디오 코드(Visual Studio Code) 텍스트 에디터에서 사용)
  • 마크로직 데이터베이스 서버
  • 네이티브스크립트(NativeScript) 모바일 애플리케이션 프레임워크[24]
  • 노드.js(Node.js) 런타임 환경[25]

참조

[1] 웹사이트 Documentation · V8 https://v8.dev/docs Google 2024-03-03
[2] 웹사이트 v8/LICENSE.v8 at master https://github.com/v[...] Github
[3] 웹사이트 Google on Google Chrome - comic book http://blogoscoped.c[...] 2010-08-17
[4] 웹사이트 V8: an open source JavaScript engine https://www.youtube.[...] Google 2024-03-15
[5] 웹사이트 Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome https://web.archive.[...] Computec Media AG 2010-06-28
[6] 웹사이트 Lifehacker Speed Tests: Safari 4, Chrome 2 https://lifehacker.c[...] 2021-05-08
[7] 간행물 Mozilla asks, 'Are we fast yet?' https://www.wired.co[...] 2019-01-18
[8] 웹사이트 V8 JavaScript Engine: License https://web.archive.[...] 2010-08-17
[9] 웹사이트 A New Crankshaft for V8 https://blog.chromiu[...] 2011-04-22
[10] 웹사이트 Revving up JavaScript performance with TurboFan https://blog.chromiu[...] 2016-03-05
[11] 웹사이트 Experimental support for WebAssembly in V8 https://v8.dev/blog/[...] 2024-03-12
[12] 웹사이트 BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8 https://www.youtube.[...] 2016-09-02
[13] 웹사이트 Launching Ignition and TurboFan https://v8project.bl[...] 2017-07-13
[14] 웹사이트 Maglev - V8's Fastest Optimizing JIT https://v8.dev/blog/[...] 2024-01-26
[15] 웹사이트 Blazingly fast parsing, part 1: optimizing the scanner · V8 https://v8.dev/blog/[...] 2021-06-01
[16] 웹사이트 Understanding V8's Bytecode https://medium.com/d[...] 2019-10-17
[17] 웹사이트 Firing up the Ignition interpreter · V8 https://v8.dev/blog/[...] 2020-09-30
[18] 웹사이트 A game changer for interactive performance https://blog.chromiu[...] 2022-02-06
[19] 웹사이트 PPC support for Google V8 goes mainstream https://web.archive.[...] 2015-06-30
[20] 웹사이트 GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®. https://github.com/i[...] 2019-04-21
[21] 웹사이트 Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z https://github.com/i[...] 2019-04-02
[22] 웹사이트 V8 Changelog v3.8.2 https://web.archive.[...] 2012-10-23
[23] 웹사이트 A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno https://github.com/d[...] 2019-07-08
[24] 웹사이트 Overview - NativeScript Docs https://docs.natives[...]
[25] 뉴스 Why Everyone Is Talking About Node http://mashable.com/[...] Mashable 2011-03-10
[26] 웹사이트 Documentation https://v8.dev/docs V8 Project 2020-02-27
[27] 웹사이트 Design Elements - Google V8 JavaScript Engine - Google Code https://code.google.[...]
[28] 뉴스 「V8」エンジンに込めた高速化の願い、Google Chromeの狙いとは https://www.itmedia.[...] ITmedia 2011-12-24
[29] 웹사이트 an overview of TraceMonkey http://hacks.mozilla[...]
[30] 웹사이트 Launching Ignition and TurboFan https://v8.dev/blog/[...]
[31] 웹사이트 Sparkplug — a non-optimizing JavaScript compiler · V8 https://v8.dev/blog/[...]
[32] 웹사이트 Maglev - V8's Fastest Optimizing JIT https://v8.dev/blog/[...] 2024-05-07
[33] 웹인용 Google on Google Chrome - comic book http://blogoscoped.c[...] Google 2010-08-17
[34] 웹인용 The genius behind Google’s web browser http://www.ft.com/cm[...] Financial Times 2010-08-17
[35] 웹인용 V8 JavaScript Engine: License https://code.google.[...] Google 2010-08-17
[36] 웹인용 A New Crankshaft for V8 https://blog.chromiu[...] Google 2011-04-22
[37] 웹인용 Revving up JavaScript performance with TurboFan https://blog.chromiu[...] 2016-03-05
[38] 웹인용 BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8 https://www.youtube.[...] 2016-09-02
[39] 웹인용 Launching Ignition and TurboFan https://v8project.bl[...] 2017-07-13



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com